package frsf.cidisi.exercise.modelo.situationCalculus.actions;

import frsf.cidisi.exercise.modelo.situationCalculus.AgenteEstado;
import frsf.cidisi.exercise.modelo.situationCalculus.AmbienteEstado;
import frsf.cidisi.exercise.modelo.util.Coordenada;
import frsf.cidisi.faia.agent.situationcalculus.SituationCalculusAction;
import frsf.cidisi.faia.state.AgentState;
import frsf.cidisi.faia.state.EnvironmentState;

public class LevantarLlave extends SituationCalculusAction {

    @Override
    public EnvironmentState execute(AgentState ast, EnvironmentState est) {
        AmbienteEstado environmentState = (AmbienteEstado) est;
        AgenteEstado agState = ((AgenteEstado) ast);
        
        if(!agState.getTieneLlave()){
            Coordenada posicion = agState.getPosAgente();
            if(agState.getLaberinto().getCelda(posicion).hasLlave()){
                    agState.setTieneLlave(true);
                    environmentState.removeLlave(posicion);
            }
    }

    return environmentState;
    }

    @Override
    public String toString() {
        return "LevantarLlave";
    }
}

